/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * MenuAplicacionServidor.java
 *
 * Created on 27/05/2009, 11:28:10 PM
 */
package view;

import bean.Proceso;
import bean.Simulador;
import control.ControlProceso;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

/**
 *
 * @author zAxA
 */
public class MenuAplicacionServidor extends javax.swing.JFrame {

    private DialogoRealizarConfiguracionSimulador dlgConfigurarSimulador;
    private DialogoRealizarConfiguracionUsuario dlgConfigurarUsuario;
    private DialogoAgregarProceso dlgAgregarProceso;
    private DialogoAgregarProcesoArchivo dlgAgregarProcesoArchivo;

    private ControlProceso controlProceso;
    private Simulador principal;

    /** Creates new form MenuAplicacionServidor */
    public MenuAplicacionServidor() {

        Toolkit toolkit = Toolkit.getDefaultToolkit();
        Dimension tamano = toolkit.getScreenSize();
        this.setPreferredSize(new Dimension(tamano.width, tamano.height - 30));
        initComponents();
        controlProceso = new ControlProceso();

    }

    public ControlProceso getControlProceso() {
        return controlProceso;
    }

    public Simulador getSimulador() {
        return principal;
    }

    public void setSimulador(Simulador principal) {
        this.principal = principal;
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tbProceso = new javax.swing.JTable();
        jmbBarra = new javax.swing.JMenuBar();
        jmConfigurar = new javax.swing.JMenu();
        jmiConfigurarSimulador = new javax.swing.JMenuItem();
        jmiConfigurarUsuarios = new javax.swing.JMenuItem();
        jmSimulador = new javax.swing.JMenu();
        jmiAgregarProceso = new javax.swing.JMenuItem();
        jmiAgregarProcesoArchivo = new javax.swing.JMenuItem();
        jmiVerProcesos = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Simulador de Sistema Operativo");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 78, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 112, Short.MAX_VALUE)
        );

        tbProceso.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "id", "Nombre", "Tipo", "Prioridad", "Usuario"
            }
        ));
        jScrollPane1.setViewportView(tbProceso);

        jmConfigurar.setText("Configuración");

        jmiConfigurarSimulador.setText("Configurar Simulador");
        jmiConfigurarSimulador.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jmiConfigurarSimuladorActionPerformed(evt);
            }
        });
        jmConfigurar.add(jmiConfigurarSimulador);

        jmiConfigurarUsuarios.setText("Configurar Usuarios");
        jmiConfigurarUsuarios.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jmiConfigurarUsuariosActionPerformed(evt);
            }
        });
        jmConfigurar.add(jmiConfigurarUsuarios);

        jmbBarra.add(jmConfigurar);

        jmSimulador.setText("Simulador");

        jmiAgregarProceso.setText("Agregar Proceso Manualmente");
        jmiAgregarProceso.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jmiAgregarProcesoActionPerformed(evt);
            }
        });
        jmSimulador.add(jmiAgregarProceso);

        jmiAgregarProcesoArchivo.setText("Agregar Proceso desde un archivo ");
        jmiAgregarProcesoArchivo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jmiAgregarProcesoArchivoActionPerformed(evt);
            }
        });
        jmSimulador.add(jmiAgregarProcesoArchivo);

        jmiVerProcesos.setText("Ver Procesos");
        jmiVerProcesos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jmiVerProcesosActionPerformed(evt);
            }
        });
        jmSimulador.add(jmiVerProcesos);

        jmbBarra.add(jmSimulador);

        setJMenuBar(jmbBarra);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(468, 468, 468)
                        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 536, Short.MAX_VALUE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jmiConfigurarSimuladorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jmiConfigurarSimuladorActionPerformed
        // TODO add your handling code here:
        if (dlgConfigurarSimulador == null) {
            dlgConfigurarSimulador = new DialogoRealizarConfiguracionSimulador(this, true);
            dlgConfigurarSimulador.setLocationRelativeTo(this);
        }
        dlgConfigurarSimulador.setVisible(true);
}//GEN-LAST:event_jmiConfigurarSimuladorActionPerformed

    private void jmiConfigurarUsuariosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jmiConfigurarUsuariosActionPerformed
        // TODO add your handling code here:
        if (dlgConfigurarUsuario == null) {
            dlgConfigurarUsuario = new DialogoRealizarConfiguracionUsuario(this, true);
            dlgConfigurarUsuario.setLocationRelativeTo(this);
        }
        dlgConfigurarUsuario.setVisible(true);
}//GEN-LAST:event_jmiConfigurarUsuariosActionPerformed

    private void jmiAgregarProcesoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jmiAgregarProcesoActionPerformed
        // TODO add your handling code here:
        if (dlgAgregarProceso == null) {
            dlgAgregarProceso = new DialogoAgregarProceso(this, true);
            dlgAgregarProceso.setLocationRelativeTo(this);
        }
        dlgAgregarProceso.setVisible(true);
}//GEN-LAST:event_jmiAgregarProcesoActionPerformed

    private void jmiVerProcesosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jmiVerProcesosActionPerformed
        // TODO add your handling code here:

        List listaProceso = controlProceso.getListadoProceso();
        DefaultTableModel tb = (DefaultTableModel) tbProceso.getModel();
        if(!listaProceso.isEmpty()) {

            for (int i = 0; i < listaProceso.size(); i++) {

            Proceso proceso = (Proceso) listaProceso.get(i);
            Object[] data = new Object[]{
                proceso.getId(),
                proceso.getNombre(),
                proceso.getTipo(),
                proceso.getPrioridad(),
                proceso.getUsuario()
            };
            tb.addRow(data);

            }
            
        } else {
            JOptionPane.showMessageDialog(this, "No existen procesos registrados", "Confirmación", JOptionPane.YES_OPTION);
        }
        
}//GEN-LAST:event_jmiVerProcesosActionPerformed

    private void jmiAgregarProcesoArchivoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jmiAgregarProcesoArchivoActionPerformed
        // TODO add your handling code here:
        if (dlgAgregarProcesoArchivo == null) {
            dlgAgregarProcesoArchivo = new DialogoAgregarProcesoArchivo(this, true);
            dlgAgregarProcesoArchivo.setLocationRelativeTo(this);
        }
        dlgAgregarProcesoArchivo.setVisible(true);
    }//GEN-LAST:event_jmiAgregarProcesoArchivoActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JMenu jmConfigurar;
    private javax.swing.JMenu jmSimulador;
    private javax.swing.JMenuBar jmbBarra;
    private javax.swing.JMenuItem jmiAgregarProceso;
    private javax.swing.JMenuItem jmiAgregarProcesoArchivo;
    private javax.swing.JMenuItem jmiConfigurarSimulador;
    private javax.swing.JMenuItem jmiConfigurarUsuarios;
    private javax.swing.JMenuItem jmiVerProcesos;
    private javax.swing.JTable tbProceso;
    // End of variables declaration//GEN-END:variables
}
